package com.ruoyi.employee.service;

import com.ruoyi.employee.domain.EmployeeUser;
import java.util.List;

/**
 * 店员 业务层
 * 
 * @author ruoyi
 */
public interface IEmployeeUserService
{
    /**
     * 根据条件分页查询店员列表
     * 
     * @param user 店员信息
     * @return 店员信息集合信息
     */
    public List<EmployeeUser> selectUserList(EmployeeUser user);

    /**
     * 通过店员名查询店员
     * 
     * @param userName 店员名
     * @return 店员对象信息
     */
    public EmployeeUser selectUserByUserName(String userName);

    /**
     * 通过店员ID查询店员
     * 
     * @param userId 店员ID
     * @return 店员对象信息
     */
    public EmployeeUser selectUserById(Long userId);

    /**
     * 校验店员名称是否唯一
     * 
     * @param user 店员信息
     * @return 结果
     */
    public boolean checkUserNameUnique(EmployeeUser user);

    /**
     * 校验店员昵称是否唯一
     *
     * @param user 店员信息
     * @return 结果
     */
    public boolean checkNickNameUnique(EmployeeUser user);

    /**
     * 校验手机号码是否唯一
     *
     * @param user 店员信息
     * @return 结果
     */
    public boolean checkPhoneUnique(EmployeeUser user);

    /**
     * 校验手机号码是否唯一
     *
     * @param userId 店员信息
     * @return 结果
     */
    public boolean checkPhoneUniqueByPhone(Long userId, String phone);

    /**
     * 校验email是否唯一
     *
     * @param user 店员信息
     * @return 结果
     */
    public boolean checkEmailUnique(EmployeeUser user);

    /**
     * 校验wxId是否唯一
     *
     * @param user 店员信息
     * @return 结果
     */
    public boolean checkWxIdUnique(EmployeeUser user);

    /**
     * 校验店员是否允许操作
     * 
     * @param user 店员信息
     */
    public void checkUserAllowed(EmployeeUser user);

    /**
     * 校验店员是否有数据权限
     *
     * @param userId 店员id
     */
    public void checkUserDataScope(Long userId);

    /**
     * 新增店员信息
     * 
     * @param user 店员信息
     * @return 结果
     */
    public int insertUser(EmployeeUser user);

    /**
     * 修改店员信息
     * 
     * @param user 店员信息
     * @return 结果
     */
    public int updateUser(EmployeeUser user);

    /**
     * 修改店员信息 - 分数
     *
     * @param userId 店员信息
     * @return 结果
     */
    public int updateUserScore(Long userId, Double score);

    /**
     * 修改店员信息 - 等级
     * @return 结果
     */
    public void updateUserLevel();

    /**
     * 修改店员状态
     * 
     * @param user 店员信息
     * @return 结果
     */
    public int updateUserStatus(EmployeeUser user);

    /**
     * 修改店员基本信息
     * 
     * @param user 店员信息
     * @return 结果
     */
    public int updateUserProfile(EmployeeUser user);

    /**
     * 修改店员头像
     * 
     * @param userName 店员名
     * @param avatar 头像地址
     * @return 结果
     */
    public boolean updateUserAvatar(String userName, String avatar);

    /**
     * 重置店员密码
     * 
     * @param user 店员信息
     * @return 结果
     */
    public int resetPwd(EmployeeUser user);

    /**
     * 重置店员密码
     * 
     * @param userName 店员名
     * @param password 密码
     * @return 结果
     */
    public int resetUserPwd(String userName, String password);

    /**
     * 通过店员ID删除店员
     * 
     * @param userId 店员ID
     * @return 结果
     */
    public int deleteUserById(Long userId);

    /**
     * 批量删除店员信息
     * 
     * @param userIds 需要删除的店员ID
     * @return 结果
     */
    public int deleteUserByIds(Long[] userIds);

    /**
     * 导入店员数据
     * 
     * @param userList 店员数据列表
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @param operName 操作店员
     * @return 结果
     */
    public String importUser(List<EmployeeUser> userList, Boolean isUpdateSupport, String operName);
}
